var letterCombinations = function (digits) {
  if (!digits) {
    return [];
  }

  let len = digits.length;
  let map = new Map();
  map.set("2", "abc");
  map.set("3", "def");
  map.set("4", "ghi");
  map.set("5", "jkl");
  map.set("6", "mno");
  map.set("7", "pqrs");
  map.set("8", "tuv");
  map.set("9", "wxyz");
  let ans = [];

  function recur(i, str) {
    if (i == len) {
      ans.push(str);
      return; // 必须有个 return 退出递归
    }

    let tmp = map.get(digits[i]); // 从左往右取数字
    // 比如 2 中的 a，然后对 3 的 def 进行循环，然后 2 中的 b，再对 3 的 def 进行循环
    for (let j = 0; j < tmp.length; j++) {
      recur(i + 1, str + tmp[j]);
    }
  }
  recur(0, "");
  return ans;
};
